Removed a redundant check of ttl in setcmd #1539
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
(这个pr前面不小心被我操作分支的时候删了,现在再提一下)
![image](https://private-user-images.githubusercontent.com/41671101/239688437-f7032721-8c24-4d1a-96d8-e71744bd8222.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyMjcxNDUsIm5iZiI6MTczOTIyNjg0NSwicGF0aCI6Ii80MTY3MTEwMS8yMzk2ODg0MzctZjcwMzI3MjEtOGMyNC00ZDFhLTk2ZDgtZTcxNzQ0YmQ4MjIyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEwVDIyMzQwNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWI5ZTFlOTIwNzJmYzllNzU5MTAwZTU2ZDZmN2I4ZTc4ZTQxZDFiZWI3ZDU3YWYwMWM4NDg3MzE0ZDQzYzdhYmYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.2sFV1MgX4wdGLDpgQaPUNy5tJfTSQA_4uT8oh-aFiOQ)
1.执行set key value ex/px sec/ms 命令时,会对ttl进行两次非负检查:
第一次:setcmd的Doinitial函数中,如果set命令带了ex/px则会判断ttl是否非负
第二次:在带有ex/px执行set时,setcmd的Do方法最后是调用partition->db()->Setex方法,在这个方法内部会进行ttl非负检查:
![image](https://private-user-images.githubusercontent.com/41671101/239688447-a80ddcb8-647f-421a-b035-e903136f3659.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyMjcxNDUsIm5iZiI6MTczOTIyNjg0NSwicGF0aCI6Ii80MTY3MTEwMS8yMzk2ODg0NDctYTgwZGRjYjgtNjQ3Zi00MjFhLWIwMzUtZTkwMzEzNmYzNjU5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEwVDIyMzQwNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWJhZTRlYjExZjQwOTVjM2UyZWEzZjVlYjJkZTNkZjk2YzgxN2U1Y2MyYjY4MmIyZWEyNjRkOTkxZmEzMWI2N2EmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.VOp8gO_3Fa2b0RWCp8Aiz_LKcdG1tDrfK5_Y0d4jdz8)
![image](https://private-user-images.githubusercontent.com/41671101/239688458-a1ec8c5e-99c6-4a7e-a88f-3b08742935db.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyMjcxNDUsIm5iZiI6MTczOTIyNjg0NSwicGF0aCI6Ii80MTY3MTEwMS8yMzk2ODg0NTgtYTFlYzhjNWUtOTljNi00YTdlLWE4OGYtM2IwODc0MjkzNWRiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEwVDIyMzQwNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTMwOTIyZmI2M2MyYjEzMzAwODFhZGU4OTYxNTNkNDNmNGQxMzVmNDRkYWViYjliYmE0NDQ0OTY5MGI0OWE0MTcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.ohuSati-IHeum9NFnKeKnQvpmL-V4ZLJLhmvVkifHBg)
为什么选择移除Doinitial中的非负检查,而不是移除setex函数中的:因为像"setex key seconds value"这样的命令在Doinitial中没有做ttl的非负检查(依赖于Setex方法中的ttl非负检查)
2.在一个被高频执行的函数中(Docmd函数),疑似存在不必要的动态类型转换(先把父类指针转子类传递给SetConn方法,但是SetConn的形参是父类指针的类型,所以又会隐式转换回去,平白多了2次没有意义的转换?)
![image](https://private-user-images.githubusercontent.com/41671101/239688483-1e33b27b-b21a-4357-a553-85955dd6f19d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyMjcxNDUsIm5iZiI6MTczOTIyNjg0NSwicGF0aCI6Ii80MTY3MTEwMS8yMzk2ODg0ODMtMWUzM2IyN2ItYjIxYS00MzU3LWE1NTMtODU5NTVkZDZmMTlkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEwVDIyMzQwNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTk5NDE1YTI5ODU2ZGMzMWFlYmM4MDI0MTlkOTY5ODEzZmRjN2VlMzVjN2U0N2M2MDk3NDA4NmQwNWJhNWVjMzEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.fgIJ_W876UlwehJuUSXxZCKMEK3EaiHTJ6bWCN7ieqs)
![image](https://private-user-images.githubusercontent.com/41671101/239688486-02b6673b-7eb6-40af-bde0-70e37d67b939.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyMjcxNDUsIm5iZiI6MTczOTIyNjg0NSwicGF0aCI6Ii80MTY3MTEwMS8yMzk2ODg0ODYtMDJiNjY3M2ItN2ViNi00MGFmLWJkZTAtNzBlMzdkNjdiOTM5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEwVDIyMzQwNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQzYTVmMjZlZDRhMWYyOGJiOGZlYjhiMmFjOWI0Yzk3YWIxMGNiMzQxOGJiYzllZTQzYWQzYjFjNzlmODY2NGImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.o0lipvObJHbM2vpjgNVtuaCm7XIyqAYyOSlCVbkBjKc)
当然,上面第2点只是我个人的看法,只是我个人没有看出这个转换有别的用处,如有错误,还请指正。